package Api.WxPay.DirectPay;

import Util.HttpUtil;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import static Util.Tools.MaptoStr;
import static Util.Tools.getMD5;

/**
 * 微信直连对账
 */
public class WxDirectPayCheck {
    public static void main(String[] args) {
        try {
            // 目标URL
            String url = "https://Pay.Heepay.com/DirectPay/Check.aspx";
            //MD5密钥，商户后台网关密钥下面第一个
            String key = "852B4A10455E49F280EEFCB1";
            //商户编号，（汇付宝商户内码：七位整数数字）
            String agent_id = "2083328";
            //固定版本号
            String version = "1";

            //  分账查询开始时间，格式为yyyyMMddHHmmss（订单创建时间）
            String begin_time = "20240325000000";
            //	分账查询结束时间，格式为yyyyMMddHHmmss（订单创建时间）
            String end_time = "20240326000000";
            //	分页查询每页条数，最大500条
            String page_size = "500";
            //	分页查询页码，第几页
            String page_index = "1";


            Map<String, String> parameters = new HashMap<String, String>();

            //拼接待加密参数
            StringBuilder builder = new StringBuilder();
            builder.append("agent_id=");
            builder.append(agent_id);
            builder.append("&begin_time=");
            builder.append(begin_time);
            builder.append("&end_time=");
            builder.append(end_time);
            builder.append("&key=");
            builder.append(key);
            builder.append("&page_index=");
            builder.append(page_index);
            builder.append("&page_size=");
            builder.append(page_size);
            builder.append("&version=");
            builder.append(version);

            String Date = builder.toString();

            System.out.println("签名串：-------------------------------->"+Date);
            //MD5加密得出签名结果
            String sign = getMD5(Date);


            //拼接请求参数
            parameters.put("agent_id", agent_id);
            parameters.put("begin_time", begin_time);
            parameters.put("end_time", end_time);
            parameters.put("page_index", page_index);
            parameters.put("page_size", page_size);
            parameters.put("version", version);
            parameters.put("sign", sign);


            //打印请求参数
            String Str = MaptoStr(parameters);
            System.out.println("发送请求数据：-------------------------------->"+ Str);

            String Result = HttpUtil.sendPost2(url, parameters);
            System.out.println("返回响应数据：-------------------------------->"+Result);

            /**
             * etail_data包含查询的单据明细信息，单据以换行符风格（Linux环境用户请注意换行符的区别），单据信息以"，"分割
             * 单据内容格式"汇付宝单据号,商户单据号,商户订单时间,汇付宝处理时间,支付金额,支付类型,请求参数remark的值\r\n"。
             * <?xml version="1.0" encoding="utf-8"?>
             * <root>
             *     <ret_code>0000</ret_code>
             *     <ret_msg></ret_msg>
             *     <detail_data><![CDATA[H240325171520016,20240325164657,2024-03-25 16:46:57,2024-03-25 16:55:27,0.01,微信支付,wowowowow]]></detail_data>
             *     <total_page><![CDATA[1]]></total_page>
             *     <total_count><![CDATA[1]]></total_count>
             *     <sign><![CDATA[f72863686a5436566472b891e5b8504a]]></sign>
             * </root>
             */


        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
